package com.bdqn.spark.chapter05.value

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Spark01_RDD_Operator_Transform_par {
  def main(args: Array[String]): Unit = {
    val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("rdd-transformation-map")
    val sc: SparkContext = new SparkContext(conf)

    // 算子 - map
    val sourceRDD: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4), 2)
    // 1 2 3 4
    // [1 2] -> map
    // [3 4] -> map
    // 分区间的数据，没有规则
    // 分区内的数据，按照先后顺序，出来

    // 并行计算：
    // 现在有两个分区
    // 1 和 3，谁先打印出来，不知道
    // 2永远在1的后面被打印出来；4永远在3的后面被打印出来

    // 体验：RDD的并行计算
    val doubleValueRDD: RDD[Int] = sourceRDD.map(num=>{
      println(s"11111111-->$num")
      num
    })

    val result: RDD[Int] = doubleValueRDD.map(num => {
      println(s"22222222-->$num")
      num
    })


    result.collect
    sc.stop()
  }
}
